In an ideal computer network, any node would be able to communicate with any or all other nodes at any transmission rate at any time. In the real world, this ideal is limited by two basic factors: 1) the signal-carrying bandwidth of the physical communication circuit is finite (e.g. 10 megabits/sec for 10-base T twisted-pair telephone wiring); and 2) any given circuit segment (hub or loop) can only carry one data transfer at a time, i.e. while a communication between two nodes on a segment is in progress, all other nodes on that segment are denied access to the network.
In a typical network such as an Ethernet network, a node wishing to transmit data monitors the communication circuit until it is idle, and then initiates a transmission. Because it takes a small but finite amount of time for the transmission to propagate along the segment wiring, it is possible that another node may see the circuit as idle and start transmitting when in fact a conflicting transmission is already on its way. The result is a collision which corrupts both transmissions.
When a node sees corrupted data indicating a collision, it waits for a random interval and then tries to restransmit the data. Because of the randomness of the interval, there is a high probability that the two nodes will not retransmit at the same time, and the data will get through. The initial transmissions were useless, however, and while they were in progress, the segment was not carrying any valid data. Consequently, if collisions occur, say, 20% of the time, the actual data throughput, or throughput efficiency, of the segment is 80% of the rating of the wiring, i.e. 8 Mb/sec for a 10 Mb/sec twisted pair.
It has been found empirically that in a typical Ethernet network segment or collision domain, collisions do not increase linearly with the number of nodes and the amount of traffic per node. Rather, there is a traffic level, dependent upon the physical characteristics of the network, above which the throughput efficiency drops precipitously and eventually stabilizes at about 18% of rated throughput, i.e. about 1.8 Mb/sec for a 10 Mb/sec pair.
To mitigate this problem, it has been proposed to divide a large network into several smaller segments interconnected by bridges or switches. A bridge between two segments takes data from one segment, stores it, and then transmits it to the other. Thus, the bridge makes each segment look like a single node to the other segment. Because of its method of operation, the bridge does, however, delay the data communication by a latency delay depending upon the length of the data packet and the overhead of the bridge circuitry. This delay is, of course, undesirable for high-speed bidirectional communication.
In general, switches mitigate the delay problem while preserving the segmenting of the network. Typically, switches read the address of an incoming data packet without storing the packet itself, and then route the packet directly to the appropriate one of several outputs. Because only the address bits are read, the latency delay is substantially reduced.
A typical programmable switch may have, for example, a port matrix with 24 ports to which individual port segments of a network can be connected. Each of these ports can be programmed by the network administrator to be connected to one of, e.g., four buses that can be selectively interconnected by the switch, in accordance with the addresses of data packets, so as to route a given packet from one bus to another. The four buses allow two separate interconnections to exist at the same time, and therefore the total throughput of the network is enhanced. However, the fact that several ports are directly connected to a given bus make that bus a single bus segment or collision domain composed of all the port segments that are connected to it.
It is a fact of network life that traffic on any large network is unpredictable. Traffic patterns vary in large swings from minute to minute and hour to hour as node (i.e. workstation) operators come to work, get new tasks, take breaks etc. Consequently, any given bus segment may function efficiently at one time and may be badly overloaded fifteen minutes later. Reprogramming the interconnections between the ports and the buses at frequent intervals to maintain maximum throughput efficiency on the network is too complex a task for a human network administrator.